<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>严格模式 | H5201125</title>
</head>
<body>
    <script>
        // 一、严格模式的声明 
        //1. 全局
        // 'use strict';
        //2. 函数内部
        // function main(){
        //     'use strict';
        // }

        'use strict';
        // 二、严格模式的特性    先声明后使用
        //1) 不允许使用未声明的变量 
        // a = 100;
        // console.log(a);

        //2) 函数内部的 this 不指向 window
        // function fn(){
        //     console.log(this);
        // }
        // fn();

        //3) eval 作用域   全局作用域  函数作用
        // eval  本身是一个函数, 函数可以接受字符串参数, 然后对内容进行 JS 语法解析与执行
        // eval('alert("i love you")');
        // eval('var a = 100; var b = 200; console.log(a)');
        // console.log(a, b);
  
        //4) 对象不能有重复的属性 (重名的属性)   IE 下有影响, chrome 没影响
        // let obj = {
        //     a: 100,
        //     a: 200
        // };
        // console.log(obj);

        //5) 严格模式下 函数不允许有同名的形参
        // function fn(a, b, b){

        // }

        //6) 新增一些保留字  private protected implements
        // var private = '私有的';
        // console.log(private);
    </script>
</body>
</html>